# Exclui todos os objetos do ambiente
rm(list = ls())

# Define o diretório de trabalho
setwd("C:/Users/Ampla/AMPLA INCORPORADORA LTDA/Ampla_R")

# Carrega os pacotes necessários
library(DT) # Tabelas dinâmicas
library(here) # Facilitar identificação de caminhos
library(htmltools) # Ferramentas para HTML
library(htmlwidgets) # Ferramentas de personalização do HTML
library(kableExtra) # Ferramentas para tabelas kable
library(magrittr) # Ferramentas sintáticas ao dplyr, e.g. %<>%
library(openxlsx) # Ler, escrever e editar arquivos xlsx
library(pdftools) # Extração de dados em PDF
library(plotly) # Gráficos interativos
library(readr) # Importação de arquivos, e.g. read_csv()
library(readxl) # Importação de arquivos em Excel, e.g. read_excel()
library(scales) # Ferramentas para configurar escalas em gráficos
library(styler) # Formatar códigos, e.g. style_file()
library(tabulapdf) # Extrair tabelas de PDFs
library(tidyverse) # Pacotes úteis para a análise de dados, e.g. dplyr e ggplot2
library(visNetwork) # Grafos

# Carrega as funções que foram criadas
source(here("dados", "funcoes", "extrair_dados_arquivo_ecn.R"))
source(here("dados", "funcoes", "extrair_caminhos_relatorio.R"))
source(here("dados", "funcoes", "extrair_dados_relatorio.R"))
source(here("dados", "funcoes", "ig_vcxve.R"))

# Formatando o código de uma maneira mais legível
style_file(here("dados", "Base de dados.Rmd"))

# Determinando o tipo do relatório
tipo.consulta_c <- c("Todos", "Mais recentes")[2]

# Lista de caminhos para os relatórios a serem reportados
caminhos.relatorio_l <- extrair_caminhos_relatorio(quais.c = tipo.consulta_c)

# Lista com os dados do relatório
dados.relatorio_l <- extrair_dados_relatorio(caminhos.relatorio_l)
source(here("Fluxo dos dados.R"))
dados_gnw
# Criar lista para armazenar os outputs a serem apresentados
output <- tagList()
# Iterar por empreendimento
for (empreendimento.c in caminhos.relatorio_l$Empreendimentos) {
  ## Adicionar título
  output <-
    tagAppendChild(
      output,
      tags$h1(paste0(
        match(
          empreendimento.c,
          caminhos.relatorio_l$Empreendimentos
        ),
        ". ",
        empreendimento.c
      ))
    )
  ## Iterar por tipos de relatório
  tipos_vc <-
    names(caminhos.relatorio_l[!names(caminhos.relatorio_l) %in%
      c("Empreendimentos", "Contagem")])
  for (t in seq_along(tipos_vc)) {
    ### Adicionar subtítulo
    output <- tagAppendChild(output, tags$h2(tipos_vc[t]))
    ### Iterar por quantidade de relatórios de um mesmo tipo
    for (i in seq_along(caminhos.relatorio_l[[t]][[empreendimento.c]])) {
      #### Extrair e formatar subsubtítulos
      subsubtitulo_vc <-
        basename(caminhos.relatorio_l[[t]][[empreendimento.c]][i]) %>%
        str_sub(1, 6) %>%
        paste0("01") %>%
        as.Date(format = "%Y%m%d") %>%
        format("%Y-%m") %>%
        unname()
      #### Adicionar subsubtítulo
      output <- tagAppendChild(output, tags$h3(subsubtitulo_vc))
      #### Adicionar gráfico de valor creditado x valor do empréstimo
      ig.vcxve <- ig_vcxve(dados.relatorio_l)
      output <- tagAppendChild(output, ig.vcxve)
      #### Renderizar tabela do empreendimento como kable()
      empreendimento_t <-
        dados.relatorio_l[[empreendimento.c]][[t]][[i]]$Empreendimento %>%
        kable() %>%
        kable_styling(
          full_width = FALSE,
          bootstrap_options = c("bordered"),
          position = "left"
        )
      #### Acrescentar título da tabela do empreendimento
      output <- tagAppendChild(output, tags$h4("[Tabela] Empreendimento"))
      #### Converter kable para HTML e acrescentar objeto ao output
      output <- tagAppendChild(output, HTML(as.character(empreendimento_t)))
      #### Renderizar tabela do empréstimo como kable()
      emprestimo_t <-
        dados.relatorio_l[[empreendimento.c]][[t]][[i]]$Emprestimo %>%
        mutate(across(
          where(is.numeric),
          ~ number_format(
            accuracy = 0.01,
            big.mark = ".",
            decimal.mark = ","
          )(.)
        )) %>%
        kable() %>%
        kable_styling(
          full_width = FALSE,
          bootstrap_options = c("bordered"),
          position = "left"
        )
      #### Acrescentar título da tabela do empreendimento
      output <- tagAppendChild(output, tags$h4("[Tabela] Empréstimo"))
      #### Converter kable para HTML e acrescentar objeto ao output
      output <- tagAppendChild(output, HTML(as.character(emprestimo_t)))
      #### Renderizar a tabela das unidades como uma datatable()
      unidades_t <-
        tagList(
          tags$h4("[Tabela] Unidades"),
          dados.relatorio_l[[empreendimento.c]][[t]][[i]]$Unidades %>%
            mutate(across(
              where(is.numeric),
              ~ number_format(
                accuracy = 0.01,
                big.mark = ".",
                decimal.mark = ","
              )(.)
            )) %>%
            datatable(
              options = list(pageLength = 5, class = "cell-border")
            )
        )
      #### Gráfico: Unidades - Histograma do financiamento
      unidades_g <-
        ggplot(
          data = dados.relatorio_l[[empreendimento.c]][[t]][[i]]$Unidades,
          aes(Financiamento)
        ) +
        geom_histogram(
          color = "black",
          fill = "lightgray"
        ) +
        geom_vline(aes(xintercept = mean(Financiamento)),
          color = "red"
        ) +
        xlab("Financiamento (em R$)") +
        scale_x_continuous(labels = scales::label_number(
          big.mark = ".",
          decimal.mark = ",",
          accuracy = 1
        )) +
        ylab("Contagem") +
        scale_y_continuous(labels = scales::label_number(accuracy = 1)) +
        theme_minimal()
      unidades_ig <- tagList(
        tags$h4("[Gráfico] Unidades: Financiamento"),
        ggplotly(unidades_g)
      )
      output <- tagAppendChild(output, unidades_t)
      output <- tagAppendChild(output, unidades_ig)
      #### Renderizar a tabela de informações consolidadas como uma datatable()
      consolidado_t <-
        tagList(
          tags$h4("[Tabela] Informações consolidadas"),
          dados.relatorio_l[[empreendimento.c]][[t]][[i]]$Consolidado %>%
            mutate(
              across(
                where(is.numeric),
                ~ number_format(
                  accuracy = 0.01,
                  big.mark = ".",
                  decimal.mark = ","
                )(.)
              )
            ) %>%
            datatable(
              options = list(pageLength = 5, class = "cell-border")
            )
        )
      #### Gráfico: Valor creditado x Valor do empréstimo
      #g_creditadoxemprestimo()
      #### Gráfico: Consolidado -
      consolidado_gdf <-
        dados.relatorio_l[[empreendimento.c]][[t]][[i]]$Consolidado %>%
        summarise(
          sum(`Valor Creditado`),
          sum(`Valor Desbloqueado`),
          sum(`Valor Amortizado`),
          sum(`Encargo Quitado do PJ`)
        ) %>%
        rbind(c(
          "Valor Creditado",
          "Valor Desbloqueado",
          "Valor Amortizado",
          "Encargo Quitado do PJ"
        )) %>%
        t() %>%
        unname() %>%
        as.data.frame() %>%
        mutate(
          Variavel = V2,
          Valor = V1 %>%
            as.numeric(),
          .keep = "unused"
        )
      consolidado_g <-
        ggplot(
          data = consolidado_gdf,
          aes(
            x = Variavel,
            y = Valor
          )
        ) +
        geom_bar(
          stat = "identity",
          color = "black",
          fill = "lightgray"
        ) +
        geom_text(
          aes(label = scales::label_comma(
            big.mark = ".",
            decimal.mark = ",",
            accuracy = 1
          )(Valor)),
          nudge_y = -20, size = 4
        ) +
        xlab("") +
        ylab("Valor (em R$)") +
        scale_y_continuous(labels = scales::label_number(
          big.mark = ".",
          decimal.mark = ",",
          accuracy = 1
        )) +
        theme_minimal()
      consolidado_ig <- tagList(
        tags$h4("[Gráfico] Informações consolidadas"),
        ggplotly(consolidado_g)
      )
      output <- tagAppendChild(output, consolidado_t)
      output <- tagAppendChild(output, consolidado_ig)
    }
  }
}
# Renderizar todo o conteúdo do HTML
browsable(output)

1. UP Estação Vila Sonia

ECN

2025-02

[Gráfico] Valor creditado x valor do empréstimo

[Tabela] Empreendimento

Empreendimento Contrato APF Valor Aporte Total de Unidade Unidades Comercializadas Unidades Financiadas Construção Unidades Complementares Data Término de Obra Data Ini - Enc Fiador
UP ESTACAO VILA SONIA 177770020232-1 062267428 0 234 0 74 0 01/11/2027 03/04/2028

[Tabela] Empréstimo

Número Data da Assinatura Valor Empréstimo Valor Reduzido Valor Utilizado Saldo Devedor Linha de financiamento Tipo de financiamento
878772137629 04/10/2024 27.607.680,00 2.895.794,57 928.463,72 927.609,85 869 38

[Tabela] Unidades

[Gráfico] Unidades: Financiamento

[Tabela] Informações consolidadas

[Gráfico] Informações consolidadas

2. UP Jardim Prudencia

ECN

2025-02

[Gráfico] Valor creditado x valor do empréstimo

[Tabela] Empreendimento

Empreendimento Contrato APF Valor Aporte Total de Unidade Unidades Comercializadas Unidades Financiadas Construção Unidades Complementares Data Término de Obra Data Ini - Enc Fiador
CONDOMINIO UP JARDIM PRUDENCIA 177770016646-5 054555008 0 106 0 62 0 04/09/2026 04/03/2027

[Tabela] Empréstimo

Número Data da Assinatura Valor Empréstimo Valor Reduzido Valor Utilizado Saldo Devedor Linha de financiamento Tipo de financiamento
878771764647 07/08/2023 9.712.092,00 3.777.094,24 2.374.285,53 1.741.925,86 869 38

[Tabela] Unidades

[Gráfico] Unidades: Financiamento

[Tabela] Informações consolidadas

[Gráfico] Informações consolidadas

3. UP Vila Sonia

ECN

2025-02

[Gráfico] Valor creditado x valor do empréstimo

[Tabela] Empreendimento

Empreendimento Contrato APF Valor Aporte Total de Unidade Unidades Comercializadas Unidades Financiadas Construção Unidades Complementares Data Término de Obra Data Ini - Enc Fiador
CONDOMINIO UP VILA SONIA 177770014920-0 060775597 0 180 0 101 0 08/12/2025 08/06/2026

[Tabela] Empréstimo

Número Data da Assinatura Valor Empréstimo Valor Reduzido Valor Utilizado Saldo Devedor Linha de financiamento Tipo de financiamento
178770205575 01/11/2022 13.856.541,00 3.156.721,34 5.133.141,98 3.791.630,65 160 38

[Tabela] Unidades

[Gráfico] Unidades: Financiamento

[Tabela] Informações consolidadas

[Gráfico] Informações consolidadas